
#include "iostream"
#include "vector"
#include "unordered_map"
#include "unordered_set"
#include "algorithm"
#include "string"
#include "list"
#include "string.h"

class OneLoop{
public:
    std::vector<char> buf;
    OneLoop(int n){
        buf.resize(1000000);
        int max_end=0;
        int min_start=1000000;
        for(int i=0;i<n;i++){
            int a,b;
            std::cin>>a>>b;
            if(b>max_end){
                max_end=b;
            }
            if(a<min_start){
                min_start=a;
            }
            memset(buf.data()+a,1,b-a);
        }
        int cnt=0;
        int max_len=0;

        int cnt_1=0;
        int max_len_1=0;
        for(int i=min_start;i<=max_end;i++){
            if(buf[i]==1){
                cnt++;
                cnt_1=0;
                if(cnt>max_len){
                    max_len=cnt;
                }
            }else{
                cnt=0;
                cnt_1++;
                max_len_1= std::max(max_len_1,cnt_1);
            }
        }
        printf("%d %d\n",max_len,max_len_1);
    }
};
class Solution {
public:
    void run() {

        bool first = true;
        int a;
        while (std::cin>>a) {
            OneLoop loop(a);
        }
    }
};

int main() {
//    bool cur_num= true;
    Solution().run();
    return 0;
}

